package com.visitor.demo1;

import com.visitor.demo1.impl.NodeA;
import com.visitor.demo1.impl.NodeB;
import com.visitor.demo1.impl.VisitA;
import com.visitor.demo1.impl.VisitB;

/**
 * 	模式意图
　　对于某个对象或者一组对象，不同的访问者，产生的结果不同，执行操作也不同。此时，就是访问者模式的典型应用了。
　　
	应用场景
　　1 不同的子类，依赖于不同的其他对象
　　2 需要对一组对象，进行许多不相关的操作，又不想在类中是现在这些方法
　　3 定义的类很少改变，但是执行的操作却经常发生改变。
 * @author DELL
 *
 */
public class Client {

	private static Context ctx = new Context();

	public static void main(String[] args) {
		//添加被多个访问者
		ctx.add(new NodeA());
		ctx.add(new NodeB());
		//不同访问者访问产生不同的结果
		ctx.visit(new VisitA());
		ctx.visit(new VisitB());
	}

}
